package com.tianzmp.ttq.admin.service;

import com.tianzmp.ttq.admin.controller.resDto.MenuTree;
import com.tianzmp.ttq.admin.entity.PageInfo;
import com.tianzmp.ttq.admin.entity.Role;

import java.util.List;

/**
 * <p>
 * 角色表 服务类
 * </p>
 *
 * @author ttq
 * @since 2022-07-30
 */
public interface IRoleService {

    /**
     * <p>
     *  exit pageInfo user
     * </p>
     * @return list
     */
    public List<Role> list();

    /**
     * <pre>
     *     select pageInfo user list
     * </pre>
     * @param current 当前页
     * @param size   当前页条数
     * @return pageInfo
     */
    public PageInfo<List<Role>> pageList(Integer current, Integer size);

    /**
     * <p>
     *     insert user
     * </p>
     * @param role object
     * @return true / false
     */
    public boolean insert(Role role);

    /**
     * <p>
     *     update userInfo
     * </p>
     * @param role
     * @return
     */
    public boolean update(Role role);


    /**
     * <p>
     *     select limit 1
     * </p>
     * @param id role - id
     * @return object
     */
    public Role getById(Long id);

    /**
     * <p>
     *     delete user
     * </p>
     * @param roleId user -id
     * @return true / false
     */
    public boolean delete(List<Long> roleId);


    /**
     * <p>
     *     角色赋值菜单权限
     * </p>
     * @param roleId  角色id
     * @param menus  菜单id
     * @return  boolean
     */
    public void authorMenu(Long roleId,List<Long> menus);

    /**
     * <p>
     *     通过用户id查询用户权限哪
     * </p>
     * @param roleId
     * @return  List
     */
    public List<MenuTree> rolePerssions(Long roleId);


    /**
     * <pre>
     *     根据多个角色ID查询菜单树
     * </pre>
     * @param roleId
     * @return
     */
    public List<MenuTree> getRolePerssions(List<Long> roleId);


}
